import 'package:enjoy_plus_hm/pages/stores/counter.dart';
import 'package:enjoy_plus_hm/utils/eventBus.dart';
import 'package:enjoy_plus_hm/utils/request.dart';
import 'package:enjoy_plus_hm/utils/toast.dart';
import 'package:enjoy_plus_hm/utils/token.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
// import 'package:syncfusion_flutter_datepicker/datepicker.dart';

// 我的页面状态保持类
class MinePage extends StatefulWidget {
  MinePage({super.key, required this.currentIndex});
  //接收一个下标索引
  //作用:当点击我的页面的时候,才会发请求
  //正常进入tabBar页面,会把所有的页面的请求都发了,这样就会出现
  //用户进入不到首页,就直接进了登录页
  //因此,这里做限制,只有当点击我的页面的时候,才会发请求
  //那在哪个生命周期函数中接收下标???
  //init??? 不行  只会执行一次
  //didUpdateWidget 当卡片变化的时候,就会触发更新执行
  int currentIndex;

  @override
  State<MinePage> createState() => _MinePageState();
}

// 我的页面状态管理类
class _MinePageState extends State<MinePage> {
  // 菜单数据
  final List menuList = [
    {"title": "我的房屋", "icon": "assets/images/house_profile_icon@2x.png"},
    {"title": "我的报修", "icon": "assets/images/repair_profile_icon@2x.png"},
    {"title": "访客记录", "icon": "assets/images/visitor_profile_icon@2x.png"},
  ];

  //获取首页房屋数据,用来测试token 401的
  getHomeData() async {
    final res = await http.get('/room');
    print(res);
  }

  //定义用户数据
  //这里有个坑点:如果要拿userInfoData的nickeName 有值就拿这个值,否则就给另一个值,这里得用null
  //userInfoData['nickName']  ?? '未命名'   要用这种写法的话,数据得用null,否则就有坑
  Map userInfoData = {'id': '', 'avatar': null, 'nickName': null};

  @override
  void didUpdateWidget(covariant MinePage oldWidget) {
    super.didUpdateWidget(oldWidget);
    //当currentIndex ==1的时候,才发送请求获取个人信息数据
    print(widget.currentIndex);
    getUserInfo();
  }

  //获取用户信息接口
  getUserInfo() async {
    try {
      final res = await http.get('/userInfo');
      print(res);
      if (res['code'] != 10000) return ToastUtil.showError('获取数据失败!');
      setState(() {
        userInfoData = res['data'];
      });
    } catch (e) {
      // ToastUtil.showError('网络请求错误');
    }
  }

  @override
  void initState() {
    super.initState();
    event.on<GetUserInfoEvent>().listen((e) {
      getUserInfo();
    });
  }

  //日期测试
  // _shouDatePicker() {
  //   return showDialog(
  //     context: context,
  //     builder: (ctx) {
  //       return SfDateRangePicker(
  //         cancelText: '取消',
  //         confirmText: '确定',
  //         selectionMode: DateRangePickerSelectionMode.single,
  //         initialSelectedDate: DateTime.now(),
  //         // 禁用未来日期
  //         minDate: DateTime(2020),
  //         maxDate: DateTime.now(),
  //         onSelectionChanged: (DateRangePickerSelectionChangedArgs args) {
  //           print('选中日期: ${args.value}');
  //           Navigator.pop(context);
  //         },
  //       );
  //     },
  //   );

  // showDatePicker(
  //   context: context,
  //   firstDate: DateTime(2000),
  //   lastDate: DateTime.now(),
  //   cancelText: '取消',
  //   confirmText: '确定',
  //   helpText: '选择日期',
  //   fieldHintText: '年/月/日',
  //   // locale: const Locale('zh', 'CN'),
  //   builder: (context, child) {
  //     return Theme(
  //       data: Theme.of(context).copyWith(
  //         textTheme: Theme.of(context).textTheme.copyWith(
  //           titleSmall: TextStyle(fontSize: 0, fontWeight: FontWeight.w600),
  //         ),
  //       ),
  //       child: Builder(
  //         builder: (context) {
  //           return Column(
  //             children: [
  //               const Row(
  //                 children: [
  //                   Expanded(child: Center(child: Text('星期一'))),
  //                   Expanded(child: Center(child: Text('星期二'))),
  //                   Expanded(child: Center(child: Text('星期三'))),
  //                   Expanded(child: Center(child: Text('星期四'))),
  //                   Expanded(child: Center(child: Text('星期五'))),
  //                   Expanded(child: Center(child: Text('星期六'))),
  //                   Expanded(child: Center(child: Text('星期天'))),
  //                 ],
  //               ),
  //               Expanded(child: child!),
  //             ],
  //           );
  //         },
  //       ),
  //     );
  //   },
  // );
  // }

  @override
  Widget build(BuildContext context) {
    //获取provider仓库数据
    final counterModel = Provider.of<CounterModerl>(context);

    return Scaffold(
      // 设置背景颜色
      backgroundColor: const Color.fromARGB(200, 85, 145, 175),
      // 设置应用栏
      appBar: AppBar(
        title: const Text('我的', style: TextStyle(color: Colors.white)),
        backgroundColor: Colors.transparent,
        centerTitle: true,
      ),
      // 设置页面内容
      body: ListView(
        children: [
          // 个人信息区域
          Container(
            padding: const EdgeInsets.all(10),
            child: GestureDetector(
              onTap: () {
                Navigator.pushNamed(
                  context,
                  '/profile',
                  //传参用户信息到用户信息页
                  arguments: userInfoData,
                );
              },
              child: Row(
                children: [
                  // 头像
                  ClipRRect(
                    borderRadius: BorderRadius.circular(50.0),
                    child: userInfoData['avatar'] != null
                        ? Image.network(
                            userInfoData['avatar'],
                            width: 50,
                            height: 50,
                            fit: BoxFit.cover,
                          )
                        : Image.asset(
                            'assets/images/avatar_1.jpg',
                            width: 50,
                            height: 50,
                          ),
                  ),
                  const SizedBox(width: 10),
                  // 用户名文本
                  Text(
                    userInfoData['nickName'] ?? '未设置昵称',
                    style: const TextStyle(fontSize: 16, color: Colors.white),
                  ),
                  const Spacer(),
                  // 去完善信息文本和图标
                  const Text('去完善信息', style: TextStyle(color: Colors.white)),
                  const Icon(
                    Icons.arrow_forward_ios,
                    color: Colors.white,
                    size: 13,
                  ),
                ],
              ),
            ),
          ),
          // 菜单区域
          Container(
            padding: const EdgeInsets.all(15),
            margin: const EdgeInsets.symmetric(vertical: 20, horizontal: 10),
            decoration: BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.circular(10),
            ),
            child: Column(
              children: menuList
                  .map(
                    (item) => SizedBox(
                      height: 50,
                      child: GestureDetector(
                        onTap: () {
                          if (item['title'] == '我的房屋') {
                            Navigator.pushNamed(context, '/house_list');
                          }
                        },
                        child: Row(
                          children: [
                            // 菜单项图标和标题
                            Row(
                              children: [
                                Image.asset(
                                  item['icon'],
                                  width: 20,
                                  height: 20,
                                ),
                                const SizedBox(width: 10),
                                Text(
                                  item['title'],
                                  style: const TextStyle(fontSize: 16),
                                ),
                              ],
                            ),
                            const Spacer(),
                            // 菜单项右侧箭头图标
                            const Icon(
                              Icons.arrow_forward_ios,
                              size: 12,
                              color: Colors.grey,
                            ),
                          ],
                        ),
                      ),
                    ),
                  )
                  .toList(),
            ),
          ),
          //添加两个按钮,用来测试token
          ElevatedButton(
            onPressed: () {
              TokenManager().saveToken('token');
            },
            child: const Text('添加token'),
          ),
          ElevatedButton(
            onPressed: () {
              TokenManager().removeToken();
            },
            child: const Text('移除token'),
          ),
          ElevatedButton(
            onPressed: () {
              getHomeData();
            },
            child: const Text('测试接口401情况'),
          ),
          ElevatedButton(
            onPressed: () {
              counterModel.add();
            },
            child: const Text('provider测试'),
          ),
          Text('provider的数据是${counterModel.count}'),
          ElevatedButton(
            onPressed: () {
              // _shouDatePicker();
            },
            child: const Text('日期测试'),
          ),
        ],
      ),
    );
  }
}
